/*
    array.some(function(currentValue, index, arr), thisValue);

    // Input
    // current: 当前元素值（必须）
    // index： 当前元素索引值（可选）
    // arr：当前元素所属的数组对象
    // thisValue：执行回调时使用传递给函数用作this的值（可选）

    // output
    // 布尔值
*/

Array.prototype.mySome = function(fn, thisValue) {
    if (typeof fn !== 'function') {
        throw new TypeError('fn must be a function');
    };

    if ([null, undefined].includes(this)) {
        throw new TypeError('this is null or undefined');
    };

    const arr = Object(this);   // 强制类型转换
    for (let i = 0; i < arr.length; i++) {
        const res = fn.call(thisValue, arr[i], i, arr);
        if (res) {
            return true;
        }
    };
    return false;
};

